Getting the accuracy for multi-label prediction in scikit-learn
https://stackoverflow.com/questions/32239577/getting-the-accuracy-for-multi-label-prediction-in-scikit-learn
#multilabel(機械学習用語)
sklearn.metrics.accuracy_score only computes the subset accuracy (3): i.e. the set of labels predicted for a sample must exactly match the corresponding set of labels in y_true.
「accuracy_scoreは部分集合のaccuracyを計算するだけ」
「すなわち、サンプルに予測されたラベルの集合は厳密に対応するy_trueのラベルの集合にマッチしなければならない」
code:accuracy.py
>> import numpy as np
>> from sklearn import metrics
>> y_true = np.array(0,1,0],0,1,1,1,0,1,[0,0,1)
>> y_pred = np.array(0,1,1],0,1,1,0,1,0,[0,0,0) # index=1の0,1,1のみ正解と一致
>> metrics.accuracy_score(y_true, y_pred) # デフォルトでnormalize=True, sample_weight=None
0.25 # 1/4
scikit-learn: Hamming loss
code:hamming_loss.py
>> metrics.hamming_loss(y_true, y_pred)
0.4166666666666667
Hamming scoreの実装あり
https://stackoverflow.com/a/32239764
リンクされている論文
(1) (積ん読)A literature survey on algorithms for multi-label learning
(3)のaccuracyは(1)ではexact match ratio
accuracyの定義:共通部分の要素数 / 和集合の要素数
(2) (積ん読)Multi-Label Classification: An Overview
accuracyの定義:共通部分の要素数 / 和集合の要素数
(3) Collective multi-label classification
computes the subset accurary
(4) Discriminative methods for multi-labeled classification
Hamming score
論文を参照して:(1)や(2)のaccuracyと同じものと思われる
Hamming scoreはaccuracyを意味するので、大きいほうがいいはず